/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.baratongoweb.model;


import com.baratongoweb.modelos.Producto;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

/**
 *
 * @author vane
 */
public class ProductoDAO extends Model {

        private PreparedStatement ps,ps2;
        private PreparedStatement psInsert;
        private PreparedStatement psEliminar;
        private PreparedStatement psModificar;

    public Producto consultar(String codigo) throws SQLException {
        Model model=new Model();
        String sql="SELECT codigo, nombre, valor, cantida_inventario, codigo_seccion FROM productos "
                + "where codigo="+codigo;
        if(ps==null){
            ps=model.getCon().prepareStatement(sql);
        }
        ResultSet rs=ps.executeQuery();

        Producto p=new Producto();
        p.setCodigo(codigo);
        p.setNombre(rs.getString("nombre"));
        p.setSeccion(model.getSeccionDAO().consultar(rs.getString("codigo_seccion")));
        p.setCantidadinventario(rs.getDouble("cantida_inventario"));
        p.setValor(rs.getDouble("valor"));
        return p;

    }

    public void insertar(Producto t) throws SQLException {

        Model model=new Model();
        String sql="insert into productos(codigo, nombre, valor, cantida_inventario, codigo_seccion)"
                + "values(?,?,?,?,?)";
        if(psInsert==null){
            psInsert=model.getCon().prepareStatement(sql);
        }
        psInsert.setString(1, t.getCodigo());
        psInsert.setString(2, t.getNombre());
        psInsert.setDouble(3, t.getValor());
        psInsert.setDouble(4, t.getCantidadinventario());
        psInsert.setString(5, t.getSeccion().getCodigo());
        ps.executeUpdate();
    }

    public void modificar(Producto t) throws SQLException {
        Model model=new Model();
        String sql="update productos set"
                + "nombre='"+t.getNombre()+"', "
                + "Valor="+t.getValor()+", "
                + "cantida_inventario="+t.getCantidadinventario()+", "
                + "where codigo="+t.getCodigo();
        psModificar=model.getCon().prepareStatement(sql);
        psModificar.executeUpdate(sql);
    }

    public void eliminar(Producto t) throws SQLException {
        Model model=new Model();
        String sql="DELETE FROM productos WHERE codigo="+t.getCodigo();
        psEliminar=model.getCon().prepareStatement(sql);
        psEliminar.executeUpdate(sql);
    }

    public LinkedList<Producto> listar() throws SQLException {
        if (!isConnect())
		throw new SQLException("no hay conexcion");

        PreparedStatement ps = null;
        ResultSet rs = null;
        Producto c = null;
        List lista = new LinkedList();
        try {
            ps =(PreparedStatement)  getCon().prepareStatement("select * from productos ");
            rs = ps.executeQuery();

            while (rs.next()) {
                c = this.loadProducto(rs);
                lista.add(c);
            }

        } finally {
            if (rs != null) {
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
        }
        return (LinkedList)lista;
    }

  private Producto loadProducto(ResultSet rs) throws SQLException {
        Producto p = new Producto();

        p.setCodigo(rs.getString(1));
        p.setNombre(rs.getString(2));
        p.setValor(rs.getDouble(3));
        p.setDescripcion(rs.getString(4));

        return p;
    }

   


}
